import router from './index'
import { asyncRoutes } from './index'
import { ElMessage } from 'element-plus'

// 白名单路由
const whiteList = ['/login']

// 添加动态路由的方法
const addRoutes = () => {
  asyncRoutes.forEach(route => {
    router.addRoute(route)
  })
}

router.beforeEach(async (to, from, next) => {
  const token = localStorage.getItem('token')
  
  if (token) {
    if (to.path === '/login') {
      // 已登录且要跳转的页面是登录页
      next('/')
    } else {
      // 添加动态路由
      addRoutes()
      
      // 如果是刷新进来的，从 constantRoutes 匹配不到路由，需要重定向一次
      if (to.matched.length === 0) {
        next({ ...to, replace: true })
        return
      }
      next()
    }
  } else {
    // 未登录
    if (whiteList.includes(to.path)) {
      // 在免登录白名单中，直接进入
      next()
    } else {
      // 其他没有访问权限的页面将被重定向到登录页面
      ElMessage.warning('请先登录')
      next(`/login?redirect=${to.path}`)
    }
  }
}) 